﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Modelo.Modulos.ClasesModelado;

namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
   public class ProyectoBD
   {
       private int IdUsuario;
       public List<UsuarioMod> ConsultarProjectManager(SqlCommand comando)
       {
           try
           {
               string sp = "spConsultarProjectManager";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<UsuarioMod> lista = new List<UsuarioMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   UsuarioMod obj = new UsuarioMod();
                   obj.IdUsuario = Convert.ToInt32(dt.Rows[i]["IdUsuario"]);
                   obj.NombreCompleto = dt.Rows[i]["NombreCompleto"].ToString();
                  
                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public List<ClientesMod> ConsultarCliente(SqlCommand comando)
       {
           try
           {
               string sp = "spConsultarCliente";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<ClientesMod> lista = new List<ClientesMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   ClientesMod obj = new ClientesMod();
                   obj.IdCliente = Convert.ToInt32(dt.Rows[i]["IdCliente"]);
                   obj.Nombre = dt.Rows[i]["NombreCliente"].ToString();

                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       public int InsertarProyecto(SqlCommand comando, ProyectoMod obj)
       {
           try
           {
               string sp = "spInsertarProyecto";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@NombreProyecto", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@DescripcionProyecto", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@FechaInicio", SqlDbType.DateTime));
               comando.Parameters.Add(new SqlParameter("@FechaFin", SqlDbType.DateTime));
               comando.Parameters.Add(new SqlParameter("@Presupuesto", SqlDbType.Decimal));
               comando.Parameters.Add(new SqlParameter("@IdCliente", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@PorcentajeAvance", SqlDbType.Int));

               comando.Parameters[0].Direction = ParameterDirection.Output;
               comando.Parameters[1].Value = obj.NombreProyecto;
               comando.Parameters[2].Value = obj.DescripcionProyecto;
               comando.Parameters[3].Value = obj.IdUsuario;
               comando.Parameters[4].Value = obj.FechaInicio;
               comando.Parameters[5].Value = obj.FechaFin;
               comando.Parameters[6].Value = obj.Presupuesto;
               comando.Parameters[7].Value = obj.IdCliente;
               comando.Parameters[8].Value = obj.PorcentajeAvance;


               comando.ExecuteNonQuery();

               return Convert.ToInt32(comando.Parameters[0].Value);

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       public void InsertarProyecto_Usuario(SqlCommand comando, ProyectoMod obj)
       {
           try
           {
               string sp = "spInsertar_Proyecto_Usuario";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();


               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));


               comando.Parameters[0].Value = obj.IdProyecto;
               comando.Parameters[1].Value = obj.IdUsuario;

               comando.ExecuteNonQuery();
           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       //pasar esto
       public List<UsuarioMod> ConsultarMiembro(SqlCommand comando, ProyectoMod objs)
       {
           try
           {
               string sp = "spConsultarMiembroProyecto";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));

               comando.Parameters[0].Value = objs.IdProyecto;


               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<UsuarioMod> lista = new List<UsuarioMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   UsuarioMod obj = new UsuarioMod();
                   obj.IdUsuario = Convert.ToInt32(dt.Rows[i]["IdUsuario"]);
                   obj.NombreCompleto = dt.Rows[i]["NombreCompleto"].ToString();
                   obj.Puesto = dt.Rows[i]["NombrePuesto"].ToString();
                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public List<ProyectoMod> ConsultarProyectoIdUsuario(SqlCommand comando, ProyectoMod objs)
       {
           try
           {
               string sp = "spConsultarProyectobyIdUsuario";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));

               comando.Parameters[0].Value = objs.IdUsuario;

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<ProyectoMod> lista = new List<ProyectoMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   ProyectoMod obj = new ProyectoMod();

                   obj.NombreProyecto = dt.Rows[i]["NombreProyecto"].ToString();
                   obj.DescripcionProyecto = dt.Rows[i]["DescripcionProyecto"].ToString();
                   obj.ProjectManager = dt.Rows[i]["NombreCompleto"].ToString();
                   obj.FechaInicio = Convert.ToDateTime(dt.Rows[i]["FechaInicio"]);
                   obj.FechaFin = Convert.ToDateTime(dt.Rows[i]["FechaFin"]);
                   obj.Presupuesto = Convert.ToDecimal(dt.Rows[i]["Presupuesto"]);
                   obj.NombreCliente = dt.Rows[i]["NombreCliente"].ToString();
                   obj.IdProyecto = Convert.ToInt32(dt.Rows[i]["IdProyecto"]);
                   obj.PorcentajeAvance = Convert.ToDecimal(dt.Rows[i]["PorcentajeAvance"]);

                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public List<ProyectoMod> ConsultarProyectoId(SqlCommand comando, ProyectoMod objs)
       {
           try
           {
               string sp = "spConsultarProyectobyId";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));

               comando.Parameters[0].Value = objs.IdProyecto;

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<ProyectoMod> lista = new List<ProyectoMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   ProyectoMod obj = new ProyectoMod();

                   obj.NombreProyecto = dt.Rows[i]["NombreProyecto"].ToString();
                   obj.DescripcionProyecto = dt.Rows[i]["DescripcionProyecto"].ToString();
                   obj.ProjectManager = dt.Rows[i]["NombreUsuario"].ToString();
                   obj.FechaInicio = Convert.ToDateTime(dt.Rows[i]["FechaInicio"]);
                   obj.FechaFin = Convert.ToDateTime(dt.Rows[i]["FechaFin"]);
                   obj.Presupuesto = Convert.ToDecimal(dt.Rows[i]["Presupuesto"]);
                   obj.NombreCliente = dt.Rows[i]["NombreCliente"].ToString();
                   obj.IdProyecto = Convert.ToInt32(dt.Rows[i]["IdProyecto"]);
                   obj.IdUsuario = Convert.ToInt32(dt.Rows[i]["IdUsuario"]);
                   obj.IdCliente = Convert.ToInt32(dt.Rows[i]["IdCliente"]);

                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public int ConsultarMiembrobyId(SqlCommand comando, ProyectoMod objs)
       {
           
           try
           {
               
               string sp = "spConsultarMiembroProyectobyIdUsuario";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));

               comando.Parameters[0].Value = objs.IdProyecto;
               comando.Parameters[1].Value = objs.IdUsuario;

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               

               for (int i = 0; i < dt.Rows.Count; i++)
               {


                   IdUsuario = Convert.ToInt32(dt.Rows[i]["IdUsuario"]);


                 
               }


               return IdUsuario;
           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public void ActualizarProyecto(SqlCommand comando, ProyectoMod obj)
       {
           try
           {
               string sp = "spActualizarProyecto";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@NombreProyecto", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@DescripcionProyecto", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@FechaInicio", SqlDbType.DateTime));
               comando.Parameters.Add(new SqlParameter("@FechaFin", SqlDbType.DateTime));
               comando.Parameters.Add(new SqlParameter("@Presupuesto", SqlDbType.Money));
               comando.Parameters.Add(new SqlParameter("@IdCliente", SqlDbType.Int));


               comando.Parameters[0].Value = obj.IdProyecto;
               comando.Parameters[1].Value = obj.NombreProyecto;
               comando.Parameters[2].Value = obj.DescripcionProyecto;
               comando.Parameters[3].Value = obj.IdUsuario;
               comando.Parameters[4].Value = obj.FechaInicio;
               comando.Parameters[5].Value = obj.FechaFin;
               comando.Parameters[6].Value = obj.Presupuesto;
               comando.Parameters[7].Value = obj.IdCliente;
             
              
               comando.ExecuteNonQuery();


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       public void EliminarProyectoUsuariobyId(SqlCommand comando, ProyectoMod obj)
       {
           try
           {
               string sp = "spEliminaProyecto_UsuariobyId";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();


               comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));
               comando.Parameters[0].Value = obj.IdUsuario;
               comando.Parameters[1].Value = obj.IdProyecto;

               comando.ExecuteNonQuery();


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       public void EliminarProyectoUsuario(SqlCommand comando, ProyectoMod obj)
       {
           try
           {
               string sp = "spEliminaProyecto_Usuario";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();


             
               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));
             
               comando.Parameters[0].Value = obj.IdProyecto;

               comando.ExecuteNonQuery();


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       public void EliminarProyecto(SqlCommand comando, ProyectoMod obj)
       {
           try
           {
               string sp = "spEliminaProyecto";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();



               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));

               comando.Parameters[0].Value = obj.IdProyecto;

               comando.ExecuteNonQuery();


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       public List<ProyectoMod> ConsultarProyectos(SqlCommand comando)
       {
           try
           {
               string sp = "spConsultarProyecto";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<ProyectoMod> lista = new List<ProyectoMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   ProyectoMod obj = new ProyectoMod();
                   obj.IdProyecto = Convert.ToInt32(dt.Rows[i]["IdProyecto"]);
                   obj.NombreProyecto = dt.Rows[i]["NombreProyecto"].ToString();

                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public DataTable ConsultarReporteActividades(SqlCommand comando,ProyectoMod obj)
       {
           try
           {
               string sp = "sp_ConsultarActividades";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();
               comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));

               comando.Parameters[0].Value = obj.IdProyecto;

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               return ds.Tables[0];
           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

    }

}
